<?php

function procedure_call_2args0($pr, $var) {
    //$oldRols = procedure_call_2argsM("ROLESUSUARIO",$role_name); 
    require("./Conn.php");
    $array = Array();
    if (!$conn) {
        $m = oci_error();
        trigger_error(htmlentities($m['message']), E_USER_ERROR);
    }
    $curs = oci_new_cursor($conn);
    $stid = oci_parse($conn, "begin " . $pr . "(:cursorAux, '" . $var . "'); end;");
    oci_bind_by_name($stid, ":cursorAux", $curs, -1, OCI_B_CURSOR);
    oci_execute($stid);
    oci_execute($curs);  // Execute the REF CURSOR like a normal statement id 
    $i = 0;
    while ($row = oci_fetch_array($curs, OCI_ASSOC)) {
        array_push($array, $row);
    }
    return $array;
}

if (!isset($_POST['req'])) {
    die("No request provided.");

    //---------------------LLENANDO PRIVILEGIOS USUARIO ---------------------------------------------
} else if (filter_input(INPUT_POST, 'req') == "CreaArchivoModify") {

    $user = filter_input(INPUT_POST, 'user');
    $pass = filter_input(INPUT_POST, 'pass');
    $caducidad = filter_input(INPUT_POST, 'caducidad_');
    $defaultTBS = filter_input(INPUT_POST, 'defaultTBS_');
    $temporaryTBS = filter_input(INPUT_POST, 'temporaryTBS_');
    $activado = filter_input(INPUT_POST, 'activado_');
    $desactivado = filter_input(INPUT_POST, 'desactivado_');
    $grants = json_decode(filter_input(INPUT_POST, 'grants_'));
    json_encode($grants);
    $rols = procedure_call_2args0("ROLESUSUARIO", $user);
    $privs = procedure_call_2args0("PRIVILEGIOS", $user);
    $str_ = "";

    foreach ($rols as $r) {
        $str_.="REVOKE " . implode($r) . " FROM " . $user . ";\n";
    }


    foreach ($privs as $p) {
        $str_.="REVOKE " . implode($p) . " FROM " . $user . ";\n";
    }

    $str_ .="ALTER USER " . $user . "\n";
    //VALIDO SI ACTIVO O DESACTIVO USUARIO
    if ($activado == true)
        $str_.= "ALTER USER " . $user . " ACCOUNT UNLOCK ;\n";
    if ($desactivado == true)
        $str_.= "ALTER USER " . $user . " ACCOUNT LOCK;\n ";
    //VALIDO EL PASSWORD
    if ($pass != NULL && $pass != "" && $pass != "4")
        $str_.= "IDENTIFIED BY " . $pass . "\n";
    //VALIDO EL DEFAULT TABLESPACE
    if ($defaultTBS != NULL && $defaultTBS != "" && $defaultTBS != "DEFAULT")
        $str_.= "DEFAULT TABLESPACE " . $defaultTBS . "\n";
    //VALIDO TEMPORARY TABLESPACE
    if ($temporaryTBS != NULL && $temporaryTBS != "" && $temporaryTBS != "DEFAULT")
        $str_.= "TEMPORARY TABLESPACE " . $temporaryTBS . "\n";
    //VALIDO LA CUOTA
//        if($defaultTBS != NULL && $defaultTBS != "" && $cuotas != NULL && $cuotas != "" && $cuotas != "size" && $cuotas != "medida")
//            $str_.= "QUOTA ".$cuotas." ON ".$defaultTBS."\n";  
    //VALIDO EL PERFIL 30,60,90 DIAS 
    if ($caducidad != NULL && $caducidad != "")
        $str_.= "PROFILE " . caduca($caducidad) . ";\n";
    //$str_.=";"; 
    foreach ($grants[0] as $r) {
        $str_.="GRANT " . $r . " TO " . $user . ";\n";
    }

    foreach ($grants[1] as $r) {
        echo($r);
        $str_.="GRANT " . $r . " TO " . $user . ";\n";
    }
    print(json_decode($str_));

    ini_set('max_execution_time', 0);
}
//$database_ = json_decode(filter_input(INPUT_POST, 'database_')); 
// CREO EL .BAT PARA EJECUTAR EL .SQL
$bat_ = fopen("cmd_Usuario.bat", "w+") or die(json_encode("No .bat"));
fwrite($bat_, "@ECHO OFF\nexit|sqlplus -s sys as sysdba/root@orcl @run_user.sql"); //C:\xampp\htdocs\InstaladorBD\
//CREO EL ARCHIVO SQL
$Run_ = fopen("run_user.sql", "w+") or die("no abrió run.sql");
fwrite($Run_, $str_); //TODO LO QUE AGREGUE LO ESCRIBO  EN EL SQL
//EJECUTO EL .BAT 
exec("cmd_Usuario.bat"); //ejecuto todo

function caduca($v) {
    if ($v == "30 días")
        return "treinta";
    else
    if ($v == "60 días")
        return "sesenta";
    else
    if ($v == "90 días")
        return "noventa";
    else
        return "infinito";
}
